package com.easylinkin.linkappapi.lobar.mapper;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.easylinkin.linkappapi.lobar.dto.UserGateDTO;
import com.easylinkin.linkappapi.lobar.dto.app.AppUserGateDTO;
import com.easylinkin.linkappapi.lobar.entity.UserGate;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import java.util.Date;
import java.util.List;
import java.util.Map;

import com.easylinkin.linkappapi.shigongyun.dto.UserGateClockDTO;
import com.easylinkin.linkappapi.shigongyun.vo.UserClockGateVo;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 用户闸机刷脸表 Mapper 接口
 * </p>
 *
 * @author kanyuanfeng
 * @since 2022-04-13
 */
public interface UserGateMapper extends BaseMapper<UserGate> {

  IPage<UserGateDTO> queryListByPage(Page page, @Param("userGateDTO") UserGateDTO userGateDTO);

  IPage<UserGateDTO> queryMonthByPage(Page page, @Param("userGateDTO") UserGateDTO userGateDTO);

  //查询当月所有的扫码数据
  List<UserGate> findAllByMonth(@Param("userGateDTO") UserGateDTO userGateDTO);

  List<AppUserGateDTO> findCompanyToDay(@Param("tenantId") String tenantId, @Param("startTime") Date startTime,@Param("endTime") Date endTime);

  List<AppUserGateDTO> findCompanyTime(@Param("tenantId") String tenantId, @Param("startTime") Date startTime,@Param("endTime") Date endTime);

  List<AppUserGateDTO> findGroupToDay(UserGateDTO userGateDTO);

  List<AppUserGateDTO> findGroupTime(UserGateDTO userGateDTO);

  List<UserGateDTO> findUser(UserGateDTO userGateDTO);

  List<UserGateDTO> dockGetAll(@Param("tenantId") String tenantId);

  /**
   * 统计数量根据条件查询按健康码分组
   *
   * @param userClockGateVo 面板机条件vo
   * @return 健康码分组统计数量list
   */
  List<Map<String, Object>> countNumGroupByHealthCode(UserClockGateVo userClockGateVo);

  /**
   * 查询健康码记录DtoList
   *
   * @param userClockGateVo 面板机条件vo
   * @return 面板机健康码dto记录list
   */
  List<UserGateClockDTO> queryGateClockDtoList(UserClockGateVo userClockGateVo);
}
